package main

import "fmt"

/*
流程控制之if

	• 不需使用括号将条件包含起来;
	• 大括号{}必须存在，即使只有一行语句;
	• 左括号必须在if或else的同一行;
	• 在if之后，条件语句之前，可以添加变量初始化语句，使用“;”进行分隔
*/
func main() {

	num := 20
	If1(num)

	/*
		在if之后，条件语句之前，可以添加变量初始化语句，使用“;”进行分隔
		TIPS：n的定义在if里，那么只能够在该if...else语句块中使用，否则编译器会报错
	*/
	var num1 int
	If2(num1)

	/*
		Go语言缺少三元表达式，不过我们可以用以下的函数模拟
	*/
	a, b := 3, 6
	a, b = b, a
	ternary := IfTernary(a > b, a, b).(int)
	fmt.Println(ternary)
}

func If1(num int) {

	if num > 0 {
		fmt.Println(num, "是正数")
	} else if num < 0 {
		fmt.Println(num, "是负数")
	} else {
		fmt.Println(num, "是0")
	}
}

func If2(n int) {

	// 在if之后，条件语句之前，可以添加变量初始化语句，使用“;”进行分隔
	if n = 10; n%2 == 0 {
		fmt.Println(n, "是偶数")
	} else {
		fmt.Println(n, "是奇数")
	}
}

func IfTernary(flag bool, trueValue, falseValue interface{}) interface{} {

	if flag {
		return trueValue
	}

	return falseValue
}
